#pragma once
#include "UltimatePhysicsScene.h"
#include "UltimatePhysXPrecompiled.h"
#include "UltimatePhysXActor.h"
#include "UltimatePhysXActorDesc.h"

class _UltimatePhysXExport UltimatePhysXScene :
	public UltimatePhysicsScene
{

	NxScene * mNxScene;
	NxPhysicsSDK* mPhysicsSDK;
	NxSceneDesc *mNxSceneDesc;

public:
	UltimatePhysXScene(NxPhysicsSDK* physicsSDK,NxSceneDesc *sceneDesc);
	~UltimatePhysXScene(void);

	virtual bool initScene();

	virtual UltimatePhysicsActor * createPhysicsActor(UltimatePhysicsActorDesc *desc,Ogre::Vector3 position, Ogre::Quaternion orientation, bool isKinematic, bool isStatic, int collisionGroup, int weight=1);
	virtual UltimatePhysicsActorDesc * createPhysicsActorDesc();
	virtual void destroyPhysicsActor(UltimatePhysicsActor* actor);
	virtual void createPhysicsPlane(int height,int collisionGroup);
	virtual void setGravity(int x, int y, int z);
	virtual void addContactListener(UltimatePhysicsContactListener* listener);


	virtual void stepSimulation(float elapsedTime);

};

